iT邦幫忙

2024 iThome 鐵人賽

DAY 7
0

今天我們來加入一些燃料,並且將之前加入的新物品整合到一個ItemGroup中

燃料

Minecraft中有許多可以拿來當作熔煉燃料的東西,我們今天來加入松脂。
首先我們像普通物品一樣創建他。

public static final Item Colophony = registerItem("colophony", new Item(new FabricItemSettings()));

就像一般的物品一樣,我們還要加入材質、model跟語言
然後我們在Mod主類(以你的Mod名稱命名的class)的onInitialize中這樣寫

FuelRegistry.INSTANCE.add(Moditems.Colophony, 300);

https://ithelp.ithome.com.tw/upload/images/20240905/20161797f7dLcNmRXU.png

我們將Colophony註冊為燃料,並給它300tick,也就是15秒的燃燒時間。
https://ithelp.ithome.com.tw/upload/images/20240905/20161797SpElj0doXC.png

ItemGroup

當我們開啟創造模式的時候,物品都會以種類區分,例如工具類、食物類等等,我們的模組物品也可以自成一類,只要透過註冊ItemGroup就可以。我們在Item資料夾中建立一個ModItemGroups,裡面這樣寫

public class ModItemGroups {

    public static final ItemGroup TheClassicofMountainandOceansItemGroup = Registry.register(Registries.ITEM_GROUP, new Identifier(net.como.TheClassicofMountainsandOceans.MOD_ID,"comoitemgroup")
            , FabricItemGroup.builder().displayName(Text.translatable("itemgroup.comoitemgroup")).icon(() -> new ItemStack(Moditems.Siderite))
                    .entries(((displayContext, entries) -> {
                entries.add(Moditems.Siderite);
                entries.add(ModBlocks.SIDERITE_BLOCK);
                entries.add(Moditems.Meat_of_the_nine_head_phoenixes);
                entries.add(Moditems.Colophony);
                entries.add(Moditems.StaffofNature);
                entries.add(ModBlocks.KUNLUN_STONE);
                entries.add(ModBlocks.SIDERITE_DOOR);
                entries.add(ModBlocks.SIDERITE_BUTTON);
                entries.add(ModBlocks.SIDERITE_FENCE);
                entries.add(ModBlocks.SIDERITE_FENCE_GATE);
                entries.add(ModBlocks.SIDERITE_PRESSURE_PLATE);
                entries.add(ModBlocks.SIDERITE_SLAB);
                entries.add(ModBlocks.SIDERITE_STAIRS);
                entries.add(ModBlocks.SIDERITE_TRAPDOOR);
                entries.add(ModBlocks.SIDERITE_WALL);

                entries.add(Moditems.SIDERITE_AXE);
                entries.add(Moditems.SIDERITE_HOE);
                entries.add(Moditems.SIDERITE_SHOVEL);
                entries.add(Moditems.SIDERITE_PICKAXE);
                entries.add(Moditems.SIDERITE_SWORD);



            })).build());

}

我們註冊一個新的物品組,所以註冊中我們寫Registries.ITEM_GROUP,new Identifier中我們給我們的模組ID跟物品組的名稱,後面我們接上FabricItemGroup.builder()來創建這個物品組,.displayname可以設定我們的顯示名稱,我們使用Text.translatable("itemgroup.comoitemgroup")來將這個名稱綁訂到Lang的JSON檔中,這樣我們就可以設定不同語言有不同名稱,.icon則可以設定做為標示顯示的物品,我這裡選擇我們殞鐵錠,最後我們使用Lambda表達示來指定誰要加入這個物品組,我們用entries.add來加入物品,最後再加一個.build來建立的個物品組。

public static void registerItemGroups(){
        TheClassicofMountainsandOceans.LOGGER.info("Registering Item Groups for " + net.como.TheClassicofMountainsandOceans.MOD_ID);
    }

後面我們再加一個方法,這個方法看似只是將一些文字記錄到LOGGER中,但是我們需要這個方法在Mod主類中呼叫

@Override
	public void onInitialize() {
		ModItemGroups.registerItemGroups();
		Moditems.registerModItems();
		ModBlocks.registerModBlocks();
		OpenCustomGuiPacket.registerReceiver();
		LOGGER.info("Hello Fabric world!");
		FuelRegistry.INSTANCE.add(Moditems.Colophony, 300);
		ServerTickEvents.END_SERVER_TICK.register(this::onServerTickEnd);

	}

我們在OnInitialize中使用這段日誌程式,在onInitialize中呼叫,這個方法是我們模組所有功能初始化的地方,我們將ModItemGroups加入到這裡來使模組在初始化的時候加入ItemGroups。

https://ithelp.ithome.com.tw/upload/images/20240906/20161797djazVfeabk.png


上一篇
Minecraft Fabric Mod 模組製作 DAY6
下一篇
Minecraft Fabric Mod 模組製作 DAY8
系列文
Minecraft JAVA Fabric 模組製作 : 成為真正的創世神30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言